Congestion in the network causes packet drops and high queuing delays, increasing latency and flow completion times. As an example, a company may lose 1% of sales for every 100 ms of extra latency. An extra 0.5 s latency in page generation may decrease web traffic by 20%. Typical mechanisms rely on historical and probabilistic methods. Historically, a traffic matrix is created and weights are assigned to paths to minimize Maximum Link Utilization (minMLU). Probabilistically, these link utilization graphs are expected to converge to optimal values but such convergence may occur too late to ease congestion with changing network resource allocations. Certain efforts only detect for big, or ‘elephant’ sized, flows in data center networks and prevent their collision on the same path. Other techniques use heuristics to include content-based differentiation and rely on historical data. Hash-based load balancing between equal shortest paths is another attempt at reducing congestion in the network. An IP flow matching a certain source/destination filter may encompass different applications. Moreover, an IP flow is a poor descriptor of the amount of resources to allocate. In addition, there is no explicit semantics to signal the end of a flow.
Better traffic engineering and resource allocation mechanisms are needed in the network to reduce congestion and hence completion time of flows. The current internet architecture is ill-suited for this purpose.